package com.guomao.demos;

import com.guomao.entity.User;

import java.util.*;

public class CollectionDemoL {

    public static void main(String[] args) {


        //匿名内部类本质上是实例化了一个对象出来
//        Comparator<User> c = new Comparator<User>() {
//            @Override
//            public int compare(User o1, User o2) {
//                int x = o1.getAge() - o2.getAge();
//                return x != 0 ? x : o1.getName().compareTo(o2.getName());
//            }
//        };

        TreeSet<User> s = new TreeSet<>(
                new Comparator<User>() {
                    @Override
                    public int compare(User o1, User o2) {
                        int x = o1.getAge() - o2.getAge();
                        return x != 0 ? x : o1.getName().compareTo(o2.getName());
                    }
                }
        );

        //19admin -> adc -> admin - root
        User root = new User("root", 20);
        User admin = new User("admin", 20);
        User admin2 = new User("adc", 20);
        User admin3 = new User("adc", 20);
        User admin4 = new User("admin", 19);

        s.add(root);
        s.add(admin);
        s.add(admin2);
        s.add(admin3);
        s.add(admin4);

//        System.out.println(s);
        System.out.println(s.first());
        System.out.println(s.last());

        // 查询[20, 40)范围内的子集


        ArrayList<String> list = new ArrayList<>();

//        Collections.addAll(list, "a", "b", "c", "d", "e", "f");


//        java.lang.Object@3a71f4dd
//                  [I@3a71f4dd
//        Object ob = new Object();
//        System.out.println(ob);

//        [Ljava.lang.String;@3a71f4dd
//        System.out.println(new String[10]);
//        testManyParam(12);
//        testManyParam(12, 50, 68);
//        testManyParam(12, 50, 68, 88, 88, 88, 88, 100);
//        testManyParam();


//        testManyParam(1);


//        快速构建set集合 但是该集合需要手动保证元素唯一 并且不能再修改
        Set<String> a = Set.of("a", "b", "c", "d");
        List<String> ab = List.of("ab", "cd");
//        System.out.println(a);
//        a.add("e");
    }


    //数据类型... 变量名 可变参数 本质上是一个一维数组 可以动态接收不同数量的参数
//    public static void testManyParam(int... arr) {
//        System.out.println(arr);
//
//        for (int i = 0; i < arr.length; i++) {
//            System.out.print(arr[i]);
//        }
//    }

    public static void testManyParam(int x, String... arr) {
        //可变参数
    }
}
